<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JSDoc: Class: PublicKeyEncryptedSessionKeyPacket</title>

    <script src="scripts/prettify/prettify.js"> </script>
    <script src="scripts/prettify/lang-css.js"> </script>
    <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>

<body>

<div id="main">

    <h1 class="page-title">Class: PublicKeyEncryptedSessionKeyPacket</h1>

    




<section>

<header>
    
        <h2><span class="attribs"><span class="type-signature"></span></span>PublicKeyEncryptedSessionKeyPacket<span class="signature">()</span><span class="type-signature"></span></h2>
        
            <div class="class-description"><p>Public-Key Encrypted Session Key Packets (Tag 1)</p>
<p><a href="https://tools.ietf.org/html/rfc4880#section-5.1">RFC4880 5.1</a>:
A Public-Key Encrypted Session Key packet holds the session key
used to encrypt a message. Zero or more Public-Key Encrypted Session Key
packets and/or Symmetric-Key Encrypted Session Key packets may precede a
Symmetrically Encrypted Data Packet, which holds an encrypted message. The
message is encrypted with the session key, and the session key is itself
encrypted and stored in the Encrypted Session Key packet(s). The
Symmetrically Encrypted Data Packet is preceded by one Public-Key Encrypted
Session Key packet for each OpenPGP key to which the message is encrypted.
The recipient of the message finds a session key that is encrypted to their
public key, decrypts the session key, and then uses the session key to
decrypt the message.</p></div>
        
    
</header>

<article>
    <div class="container-overview">
    
        

    
    <h2>Constructor</h2>
    

    
    <h4 class="name" id="PublicKeyEncryptedSessionKeyPacket"><span class="type-signature"></span>new PublicKeyEncryptedSessionKeyPacket<span class="signature">()</span><span class="type-signature"></span></h4>
    

    















<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js#L42">line 42</a>
    </li></ul></dd>
    

    

    

    
</dl>




















    
    </div>

    

    

    

    

    

    

    
        <h3 class="subsection-title">Members</h3>

        
            
<h4 class="name" id="encrypted"><span class="type-signature"></span>encrypted<span class="type-signature"> :Object</span></h4>






    <h5>Type:</h5>
    <ul>
        <li>
            
<span class="param-type">Object</span>


        </li>
    </ul>





<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js#L69">line 69</a>
    </li></ul></dd>
    

    

    

    
</dl>






        
            
<h4 class="name" id="publicKeyAlgorithm"><span class="type-signature"></span>publicKeyAlgorithm<span class="type-signature"> :enums.publicKey|null</span></h4>






    <h5>Type:</h5>
    <ul>
        <li>
            
<span class="param-type">enums.publicKey</span>
|

<span class="param-type">null</span>


        </li>
    </ul>





<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js#L59">line 59</a>
    </li></ul></dd>
    

    

    

    
</dl>






        
            
<h4 class="name" id="sessionKeyAlgorithm"><span class="type-signature"></span>sessionKeyAlgorithm<span class="type-signature"> :enums.symmetric</span></h4>




<div class="description">
    <p>Algorithm to encrypt the message with</p>
</div>



    <h5>Type:</h5>
    <ul>
        <li>
            
<span class="param-type">enums.symmetric</span>


        </li>
    </ul>





<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js#L66">line 66</a>
    </li></ul></dd>
    

    

    

    
</dl>






        
    

    
        <h3 class="subsection-title">Methods</h3>

        
            

    

    
    <h4 class="name" id="decrypt"><span class="type-signature">(async) </span>decrypt<span class="signature">(key, randomSessionKey<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4>
    

    



<div class="description">
    <p>Decrypts the session key (only for public key encrypted session key packets (tag 1)</p>
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        
        <th>Attributes</th>
        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>key</code></td>
            

            <td class="type">
            
                
<span class="param-type"><a href="SecretKeyPacket.html">SecretKeyPacket</a></span>


            
            </td>

            
                <td class="attributes">
                

                

                
                </td>
            

            

            <td class="description last"><p>decrypted private key</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>randomSessionKey</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            
                <td class="attributes">
                
                    &lt;optional><br>
                

                

                
                </td>
            

            

            <td class="description last"><p>Bogus session key to use in case of sensitive decryption error, or if the decrypted session key is of a different type/size.
This is needed for constant-time processing. Expected object of the form: { sessionKey: Uint8Array, sessionKeyAlgorithm: enums.symmetric }</p></td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js#L200">line 200</a>
    </li></ul></dd>
    

    

    

    
</dl>













<h5>Throws:</h5>

        

<dl>
    <dt>
        <div class="param-desc">
        <p>if decryption failed, unless <code>randomSessionKey</code> is given</p>
        </div>
    </dt>
    <dd></dd>
    <dt>
        <dl>
            <dt>
                Type
            </dt>
            <dd>
                
<span class="param-type">Error</span>


            </dd>
        </dl>
    </dt>
    <dd></dd>
</dl>


    







        
            

    

    
    <h4 class="name" id="encrypt"><span class="type-signature">(async) </span>encrypt<span class="signature">(key)</span><span class="type-signature"></span></h4>
    

    



<div class="description">
    <p>Encrypt session key packet</p>
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>key</code></td>
            

            <td class="type">
            
                
<span class="param-type"><a href="PublicKeyPacket.html">PublicKeyPacket</a></span>


            
            </td>

            

            

            <td class="description last"><p>Public key</p></td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js#L181">line 181</a>
    </li></ul></dd>
    

    

    

    
</dl>













<h5>Throws:</h5>

        

<dl>
    <dt>
        <div class="param-desc">
        <p>if encryption failed</p>
        </div>
    </dt>
    <dd></dd>
    <dt>
        <dl>
            <dt>
                Type
            </dt>
            <dd>
                
<span class="param-type">Error</span>


            </dd>
        </dl>
    </dt>
    <dd></dd>
</dl>


    







        
            

    

    
    <h4 class="name" id="read"><span class="type-signature"></span>read<span class="signature">(bytes)</span><span class="type-signature"></span></h4>
    

    



<div class="description">
    <p>Parsing function for a publickey encrypted session key packet (tag 1).</p>
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>bytes</code></td>
            

            <td class="type">
            
                
<span class="param-type">Uint8Array</span>


            
            </td>

            

            

            <td class="description last"><p>Payload of a tag 1 packet</p></td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js#L101">line 101</a>
    </li></ul></dd>
    

    

    

    
</dl>




















        
            

    

    
    <h4 class="name" id="write"><span class="type-signature"></span>write<span class="signature">()</span><span class="type-signature"> &rarr; {Uint8Array}</span></h4>
    

    



<div class="description">
    <p>Create a binary representation of a tag 1 packet</p>
</div>













<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.2.2/src/packet/public_key_encrypted_session_key.js#L148">line 148</a>
    </li></ul></dd>
    

    

    

    
</dl>















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>The Uint8Array representation.</p>
</div>



<dl>
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Uint8Array</span>


    </dd>
</dl>

    





        
    

    

    
</article>

</section>




</div>

<nav>
    <h2><a href="index.html">Home</a></h2><h3>Functions</h3><ul><li><a href="global.html#armor">armor</a></li><li><a href="global.html#createCleartextMessage">createCleartextMessage</a></li><li><a href="global.html#createMessage">createMessage</a></li><li><a href="global.html#decrypt">decrypt</a></li><li><a href="global.html#decryptKey">decryptKey</a></li><li><a href="global.html#decryptSessionKeys">decryptSessionKeys</a></li><li><a href="global.html#encrypt">encrypt</a></li><li><a href="global.html#encryptKey">encryptKey</a></li><li><a href="global.html#encryptSessionKey">encryptSessionKey</a></li><li><a href="global.html#generateKey">generateKey</a></li><li><a href="global.html#generateSessionKey">generateSessionKey</a></li><li><a href="global.html#readCleartextMessage">readCleartextMessage</a></li><li><a href="global.html#readMessage">readMessage</a></li><li><a href="global.html#readSignature">readSignature</a></li><li><a href="global.html#reformatKey">reformatKey</a></li><li><a href="global.html#revokeKey">revokeKey</a></li><li><a href="global.html#sign">sign</a></li><li><a href="global.html#unarmor">unarmor</a></li><li><a href="global.html#verify">verify</a></li></ul><h3>Modules</h3><ul><li><a href="module-config.html">config</a></li><li><a href="module-enums.html">enums</a></li></ul><h3>Classes</h3><ul><li><a href="AEADEncryptedDataPacket.html">AEADEncryptedDataPacket</a></li><li><a href="CleartextMessage.html">CleartextMessage</a></li><li><a href="CompressedDataPacket.html">CompressedDataPacket</a></li><li><a href="Key.html">Key</a></li><li><a href="LiteralDataPacket.html">LiteralDataPacket</a></li><li><a href="MarkerPacket.html">MarkerPacket</a></li><li><a href="Message.html">Message</a></li><li><a href="OnePassSignaturePacket.html">OnePassSignaturePacket</a></li><li><a href="PacketList.html">PacketList</a></li><li><a href="PaddingPacket.html">PaddingPacket</a></li><li><a href="PrivateKey.html">PrivateKey</a></li><li><a href="PublicKey.html">PublicKey</a></li><li><a href="PublicKeyEncryptedSessionKeyPacket.html">PublicKeyEncryptedSessionKeyPacket</a></li><li><a href="PublicKeyPacket.html">PublicKeyPacket</a></li><li><a href="PublicSubkeyPacket.html">PublicSubkeyPacket</a></li><li><a href="SecretKeyPacket.html">SecretKeyPacket</a></li><li><a href="SecretSubkeyPacket.html">SecretSubkeyPacket</a></li><li><a href="Signature.html">Signature</a></li><li><a href="SignaturePacket.html">SignaturePacket</a></li><li><a href="SymEncryptedIntegrityProtectedDataPacket.html">SymEncryptedIntegrityProtectedDataPacket</a></li><li><a href="SymEncryptedSessionKeyPacket.html">SymEncryptedSessionKeyPacket</a></li><li><a href="SymmetricallyEncryptedDataPacket.html">SymmetricallyEncryptedDataPacket</a></li><li><a href="TrustPacket.html">TrustPacket</a></li><li><a href="UserAttributePacket.html">UserAttributePacket</a></li><li><a href="UserIDPacket.html">UserIDPacket</a></li><li><a href="module-key_Subkey-Subkey.html">Subkey</a></li><li><a href="module-key_User-User.html">User</a></li></ul>
</nav>

<br class="clear">

<footer>
    Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.4</a>
</footer>

<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>